// GTK的箭头构件（GtkArrow）用于建立一个带有箭头的按钮，其有多种不同的指定方向和不同的风格。
// note:箭头构件和标签类似，只是一个指示标识，需要放入一个容器中才能使用，本身也不能引发事件，
// 通常来说和按钮配合使用（在箭头构件中放入按钮构件）形成带指示性的按钮
/* 该案例为在窗体中创建带按钮的上、下、左、右箭头*/

#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>

int main(int argc, char *argv[]){
	
	GtkWidget *window,*button,*box,*arrow;
	GtkWidget *table;	// 用来创建组合表table

	char title[] = "GtkArrow Test";

	// 初始化窗体
	gtk_init(&argc,&argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),title);
	gtk_widget_set_usize(window,200,200);
	gtk_widget_set_uposition(window,300,250);
	gtk_signal_connect(GTK_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);

	// 创建box,并将box加入到窗体中
	//box = gtk_hbox_new(FALSE,0);
	//gtk_container_add(GTK_CONTAINER(window),box);
	
	// 创建一个2x3的组合表，用于显示上下左右四个箭头
	table = gtk_table_new(2,3,FALSE);	
	gtk_container_add(GTK_CONTAINER(window),table);

	// 创建按钮UP,并将箭头指针添加到button中
	button = gtk_button_new();
	arrow = gtk_arrow_new(GTK_ARROW_UP,GTK_SHADOW_OUT);
	gtk_container_add(GTK_CONTAINER(button),arrow);

	// 将button加入到box中
	//gtk_box_pack_start(GTK_BOX(box),button,FALSE,TRUE,0);
	gtk_table_attach(GTK_TABLE(table),button,1,2,0,1,GTK_EXPAND,GTK_EXPAND,0,0);
	gtk_widget_show(arrow);
	gtk_widget_show(button);
	
	// 创建按钮DOWN
	button = gtk_button_new();
	arrow =  gtk_arrow_new(GTK_ARROW_DOWN,GTK_SHADOW_OUT);
	gtk_container_add(GTK_CONTAINER(button),arrow);
	//gtk_box_pack_start(GTK_BOX(box),button,FALSE,TRUE,0);
	gtk_table_attach(GTK_TABLE(table),button,1,2,1,2,GTK_EXPAND,GTK_EXPAND,0,0);
	gtk_widget_show(arrow);
	gtk_widget_show(button);

	// 创建按钮LEFT
	button = gtk_button_new();
	arrow =  gtk_arrow_new(GTK_ARROW_LEFT,GTK_SHADOW_OUT);
	gtk_container_add(GTK_CONTAINER(button),arrow);
	//gtk_box_pack_start(GTK_BOX(box),button,FALSE,TRUE,0);
	gtk_table_attach(GTK_TABLE(table),button,0,1,1,2,GTK_EXPAND,GTK_EXPAND,0,0);
	gtk_widget_show(arrow);
	gtk_widget_show(button);

	// 创建按钮RIGHT
	button = gtk_button_new();
	arrow =  gtk_arrow_new(GTK_ARROW_RIGHT,GTK_SHADOW_ETCHED_IN);
	gtk_container_add(GTK_CONTAINER(button),arrow);
	//gtk_box_pack_start(GTK_BOX(box),button,FALSE,TRUE,0);
	gtk_table_attach(GTK_TABLE(table),button,2,4,1,2,GTK_EXPAND,GTK_EXPAND,0,0);
	gtk_widget_show(arrow);
	gtk_widget_show(button);

	//gtk_widget_show(box);
	gtk_widget_show(table);
	gtk_widget_show(window);
	gtk_main();

	return 0;
		
}

